Developer Guide

Instalação
- instalar nativescript (docs.nativescript.org)
- instalar dependências com
npm installno root do projecto(não esquecer que temos um registo interno npm https://npm.dev.mysns.pt/) - usar nativescript para executar o projecto
WebPack
Isto torna toda a aplicação muito mais rápida
Para construir com antecedência, deve executar comandos npm (ver o projeto package.json)
ex:npm run build-android-bundle
Nota 1: ISTO VAI MUDAR NA PRÓXIMA VERSÃO DE NATIVECRIPT (3.4)
Nota 2: * para o cartão com pdf(Testamento vital) temos que especificar algumas entradas no webpack config(webpack.config.js da linha 166 a 171)
Nota 3: É necessário validar se é preciso atualizar dependências regularmente (sempre que possivel, diariamente)
Git,Testes, Continuous Integration
Git
O workflow do repositorio de git é muito simples, é composto por duas branches principais, a master tem a última versão que esta nas stores, a development é a proxima iteração da aplicação.
Cada feature que é implementada ou bug corrigido tem uma branch nova com um nome sugestivo em relação ao conteudo da mesma.
No final da implementação o developer submete um pull request que postriormente tem de ser aprovado por outro membro da equipa, a cada pull request a Continuous Integration corre testes unitarios e testes e2e!
Ao fazer uma release a branch development dá merge com a master e cria-se uma tag com a versao que foi released
Testes
O project tem suporte a testes unitarios, há ja algum testes feitos (app/tests) o suficiente para enterder como se fazem o resto dos testes
Tem tambem testes end-to-end, a documentaçao da ferramenta usada(plugin nativescript-appium), e basicamente deve-se mimicar o comportamento do utilizador ao usar a aplicaçao, isto nao esta de momento implementado porqur o backend ainda nao suporta na totalidade um ambiente de qualidade/devenvolvimento i.e. nao ha utilizador de demos com todos os cartões. O plugin tem tambem a funcionalidade de fazer screenshot diffing
Executar e2e tests
npm run e2e
Executar Unit tests
test <Platform>
CI
Neste momento pode ser usada a ci do VSTS, o mac mini tem um agente(script executado na consola) que se liga ao vsts, apartir dai quando ha um pull request pode ser especificado no vsts o que correr, neste caso queremos correr os testes unitarios e e2e, nao esquecer de ter dois emuladores, ou dispositivos ligados para os testes correrem nos mesmoS
Releasing process
iOS:
Para fazer release para iOS é necessária uma conta itunes e executar npm run publish-ios-bundle
Android:
- build com webpack(
npm run build-android-bundle --release --key-store-path ./my-release-key.keystore --key-store-password 916265505 --key-store-alias MySNSstore --key-store-alias-password 916265505) - isto assinará automaticamente (auto sign) o apk e agora precisa fazer upload para a playstore console
Notas Prioritárias
- Alguns dos plugins estão no nosso registro npm interno porque precisavam de modificações
- O plugin
nativescript-hook-debug-productionnão funciona bem (não deteta o debug no modo de lançamento, mas recebemos um pull request para corrigir. Esperar pela nova versão do nativescript porque precisamos ter o Webpack a trabalhar com ele) - há muitas coisas que podem ser otimizadas para o ngrx
- a dependência
hoekserve para usar a mesma engine de validação de campos(comunicaçao cliente Servidor) que os packages@ces-sec/*, internamente temos uma versão(4.1.99) publicada no resgistro interno de npm, o ambiente de Nativescript nao suporta algumas primitivas de node, então o package tem apenas retiradas algumas linhas que não eram necessárias - nativescript
advanced-webview-interfacetambém possui uma versão interna (internal release, pois o autor está inativo) - Vendor.ts precisa de algumas otimizações, agora existem algumas bibliotecas repetidas nos diferentes módulos do aplicativo (https://docs.nativescript.org/best-practices/bundling-with-webpack)
- ngrx e componentes normais precisam de testes
- Testes e2e precisam de uma conta demo do backend
Cartão Atividade Fisica / Medições de Saúde
- o plugin
nativescript-health-datatambém tem um pull request pendente para retornar dados uniformes (foi libertada internamente uma versão com as mudanças desse pull request) - estamos a usar uma versão interna do circle plugin na atividade fisica por causa de um pull request que fizemos. Enquanto isso o autor lançou uma versão mais recente (então isso precisa ser atualizado)
Plugin nativescript-health-data - https://github.com/filipemendes1994/nativescript-health-data
Se tiverem problemas, abram um issue no github.